package com.efast.standalone.dao;
import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.efast.standalone.enti.TwBasLot;
@Mapper
public interface TwBasLotDao{

	/**
	 * 获得一个TwBasLot对象,以参数TwBasLot对象中不为空的属性作为条件进行查询
	 * @param obj
	 * @return
	 */
    TwBasLot selectTwBasLotByObj(TwBasLot obj);
    
    /**
     * 通过TwBasLot的lotName获得TwBasLot对象
     * 
     * */
    TwBasLot selectTwBasLotByname(String lotName);
    /**
     * 通过TwBasLot的vin获得TwBasLot对象
     * 
     * */
    TwBasLot selectTwBasLotByVin(String vin);
	/**
	 * 通过vin或者自编号获取lot信息
	 * @param vinOrSelf vin或者自编号
	 * @return
	 */
    List<TwBasLot>selectTwBasLotByVinOrSelf(String vinOrSelf);
	/**
	 * 通过TwBasLot的id获得TwBasLot对象
	 * @param id
	 * @return
	 */
    TwBasLot selectTwBasLotById(Integer id);
	/**
	 * 插入TwBasLot到数据库,包括null值
	 * @param value
	 * @return
	 */
    int insertTwBasLot(TwBasLot value);
	/**
	 * 插入TwBasLot中属性值不为null的数据到数据库
	 * @param value
	 * @return
	 */
    int insertNonEmptyTwBasLot(TwBasLot value);
	/**
	 * 批量插入TwBasLot到数据库,包括null值
	 * @param value
	 * @return
	 */
    int insertTwBasLotByBatch(List<TwBasLot> value);
	/**
	 * 通过TwBasLot的id删除TwBasLot
	 * @param id
	 * @return
	 */
    int deleteTwBasLotById(Integer id);
	/**
	 * 通过TwBasLot的id更新TwBasLot中的数据,包括null值
	 * @param enti
	 * @return
	 */
    int updateTwBasLotById(TwBasLot enti);
	/**
	 * 通过TwBasLot的id更新TwBasLot中属性不为null的数据
	 * @param enti
	 * @return
	 */
    int updateNonEmptyTwBasLotById(TwBasLot enti);

	/**
	 * 通过成品号找到此成品是否有缺陷
	 * @param dto
	 * @return
	 */
	TwBasLot getDefFromLotName(String lotName);
	
	/**
	 * 通过lotID关闭lot
	 * @param status,usr,date,lotID
	 * @return
	 */
	Integer closeLotsByID(@Param("status")String status,@Param("user")String user,@Param("date")Date date,@Param("lotID")Integer lotID);
	/**
	 * 通过lotID报废lot
	 * @param status,state,user,date,lotID
	 * @return
	 */
	Integer scrapLotsByID(@Param("status")String status,@Param("state")String state,@Param("user")String user,@Param("date")Date date,@Param("lotID")Integer lotID);
	
	void generateVin(@Param("bsn") String bsn, @Param("vin") String vin);
	//获取特殊要求
	List<TwBasLot> getspecialRequire(String vinOrSelf);
}